Exit strategy

Once a variant is finished on a flow object it will try to move on to one of the successors of the flow object. Of course one of the successors that are valid for this variant according to the flow of the variant. The exit strategy determines how the successors of a flow object are prioritized when a variant is ready to leave the flow object, i.e. which successor should be tried first.

The default order of the successors is determined by the order in which the connections are made from a flow object to its successors, i.e. the first connected successor will be the first successors and so on (an example is given under Connections).

Note: All exit strategies work per variant even though several variants can belong to the same flow, i.e. it might appear that the exit strategy is not followed when several variants are used in the model but viewing it per variant it is correct.

Note: The state of a exit strategy (i.e. the next aimed successor) is only updated once a part moves to the intended (first tried) successor or the part has not been blocked.

The available options for the exit strategy are:

Cyclic

Successors will be tried in the sequence they were added and once at the end it will start over from the begining again. Once a variant have been moved to a successor the first one tried for the next variant will be the one after the previous successor.

Example 1: Consider the 3 successors OP1,OP2 and OP3 in the image above. Lets say that a part was moved to OP2 (successor 2), then the next part will first try to move to OP3 (successor 3).

Example 2: Again consider the 3 successors OP1, OP2 and OP3. Lets say that a part was moved to OP3 (successor 3), then the next part will first try to move to OP1 (successor 1).


Successor order

Successors will be tried in the sequence they were added and always start at the first successor.

Example 1: Consider the 3 successors OP1,OP2 and OP3 in the image above. Lets say that a part was moved to OP2 (successor 2) after not being able to move to OP1, then the next part will first try to move to OP1 (successor 1).

Example 2: Again consider the 3 successors OP1, OP2 and OP3. Lets say that a part was moved to OP3 (successor 3) after not being able to move to OP1 or OP2, then next part will first try to move to OP1 (successor 1).


Random

Successors will be tried randomly with equal probabilities, i.e. the successors are sorted randomly without regard to their sequence.


Weighted

Similar to the random exit strategy, but the successors are tried in random order with regards to the weights on the connections in the following manner:

  1. Pick the first successor randomly with the relative weights as the probabilities.
    In the example to the right the probabilities for the three successors OP1, OP2 and OP3 of being picked as the first successor are:
    • OP1 - 10 %, (1 / (1 + 4 + 5)
    • OP2 - 40 %, (4 / (1 + 4 + 5)
    • OP3 - 50 %, (5 / (1 + 4 + 5)
  2. Sort the remaining successors according to their weights.
    In the example to the right when OP3 was picked as the first successor the second successor would be OP2 and the third successor would be OP1.

Note: This will strive to reach the probabilities among the successors (specified by their relative weights) , but depending on the state of the successors at each atempt at moving a part it might not be possible (i.e. the first picked successor might not always be the one where the part ends up).


Weighted blocking

Similar to the weighted exit strategy, but the only successor allowed will be the one picked in the first step.

Note: This will (given enough time) mean that the probabilities among the successors (specified by their relative weights) will be reached.


Weighted sequence

Similar to the cyclic exit strategy this will sort the successors according to the order in which they were made. Then the weights of the connections will be used to specify how many parts that should be moved to each successor before moving on to the next successor.

Example 1: Consider the 3 successors OP1,OP2 and OP3 in the image to the right. Parts will be moved as:

  1. Move one part to OP1 (successor 1).
  2. Move four parts to OP2 (successor 2).
  3. Move five parts to OP3 (successor 3).
  4. Go to step 1.

Note: This is per variant and it doesn't matter if they belong to the the same flow.


Weighted sequence per part

Used for "looping" individual parts in the model. Similar to the cyclic exit strategy this will sort the successors according to the order in which they were made. Then the weights of the connections will be used to specify how many times each individual part should be moved to each sucessor before moving on to the next successor.

Example 1: Consider the 2 successors Paint and Sink in the image to the right. Individual parts will be moved as:

  1. Move the part 5 times to Paint (successor 1).
  2. Move the part to Sink (successor 2).

Note: This type of loops could cause your model to be blocked.

Note: Make sure not all successors result in a loop, i.e. the part have some way of exiting the loop.